package chapter16;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author lzy
 * @version v1.0
 * Create DateTime: 2019/2/23 15:16
 * <p>
 * 使用AtomicInteger实现一个显示锁,这个锁是阻塞式的
 */
public class MyLock {
    // 锁状态，0表示为上锁，1表示上锁
    private AtomicInteger staus = new AtomicInteger(0);

    public void lock() {
        while (!staus.compareAndSet(0, 1)) {
            Thread.yield();
        }
    }

    public void unlock() {
        staus.compareAndSet(1, 0);
    }

    public boolean isLocked() {
        return staus.equals(1);
    }
}
